/*
 * pilas.c
 *
 *  Created on: 01/10/2011
 *      Author: alejandro
 */

#include <stdlib.h>
#include <stdio.h>

typedef struct PilaNodo {
	void* dato;
	struct PilaNodo *sig;
} pilaNodo;

typedef pilaNodo **pila;

pila pila_Crear() {
	pila P;
	P = (pilaNodo **) malloc(sizeof(pilaNodo *));
	*P = NULL;
	return P;
}

void pila_Meter(void* dato, pila P) {
	pilaNodo *q;
	q = (pilaNodo *) malloc(sizeof(pilaNodo));
	q->dato = dato;
	q->sig = (*P);
	(*P) = q;
}

void* pila_Sacar(pila P) {
	void* dato = (*P)->dato;
	pilaNodo *q;
	q = (*P);
	(*P) = q->sig;
	free(q);
	return dato;
}

void pila_Destruir(pila P) {
	while (!(*P == NULL))
		pila_Sacar(P);
	free(P);
}


